﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.Composition;
using COFE.Core.Profile;
using COFE.Core.Lister;
using COFE.IO;
using COFE.Core.Logger;
using COFE.Core.Utils;
using COFE.Core.Filter;
using COFE.Core.EntryType;
using COFE.Core.Entry;

namespace COFE.Core.Plugin
{
    [Export(typeof(IPlugin))]
    public class COFEIOPlugin : COFEPluginBase
    {
        #region Constructor

        public COFEIOPlugin()
            : base(PluginBase.Priority_COFEIO)
        {
            _directoryListerFactories.AddRange(new IFactory<IDirectoryLister>[] 
            {
                new COFE.IO.FSI.FileSystemFactory("FSI"),
                new COFE.IO.FSIEX.FileSystemExFactory("FSIEX"),
                new COFE.IO.ISG.IsolatedStorageFactory("ISG"),
                new COFE.IO.SZ.SevenZipFactory("SZ")
            });

            _entryPropertyProviders.AddRange(new ISecondaryPropertyProvider<IFileSystemInfo>[]
            {
                new ThumbnailPropertyProvider(), new ShellIconPropertyProvider()
            });

            _entryListPropertyProviders.AddRange(new ISecondaryPropertyProvider<IEntryList>[]
            {
                new COFE.IO.SZ.SevenZipActionProvider()
            });

            _entryFilterIconProviders.AddRange(new Tuple<Type, IEntryTypeIconProvider>[]
            {
                FilterUtils2.Tuple(typeof(FileTypeEntryFilter), ShellIconProvider.Instance)                
            });
        }

        #endregion

        #region Methods
       

        #endregion

        #region Data

        #endregion

        #region Public Properties

        #endregion


    }
}
